#include <stdio.h>
#include <stdlib.h>

#define max(a, b) (a) > (b) ? (a) : (b)

int N = 0;
int MAX = 0;
int matrix[100][100];
int mmatrix[100][100];

void getinput()
{
    int i = 0, j = 0;

    scanf("%d", &N);

    for(i = 0; i < N; i++)
    {
        for(j = 0; j <= i; j++)
        {
            scanf("%d", &matrix[i][j]);
        }
    }

//    for(i = 0; i < N; i++)
//    {
//        for(j = 0; j <= i; j++)
//        {
//            printf("%d\t", matrix[i][j]);
//        }
//        printf("\r\n");
//    }
}

void init()
{
    int i = 0, j = 0;

    for(i = 0; i < 100; i++)
    {
        for(j = 0; j < 100; j++)
        {
            matrix[i][j] = 0;
            mmatrix[i][j] = 0;
        }
    }
}

void getmax()
{
    int i = 0, j = 0;
    int m0 = 0, m1 = 0;

    for(j = 0; j < N; j++)
    {
        mmatrix[N-1][j] = matrix[N-1][j];
    }

    for(i = N-2; i>= 0; i--)
    {
        for(j = 0; j <= i; j++)
        {
            m0 = mmatrix[i+1][j] + matrix[i][j];
            m1 = mmatrix[i+1][j+1] + matrix[i][j];
            mmatrix[i][j] = max(m0, m1);
        }
    }
}

void printresult()
{
//    int i = 0, j = 0;
//
//    for(i = 0; i < N; i++)
//    {
//        for(j = 0; j <= i; j++)
//        {
//            printf("%d\t", mmatrix[i][j]);
//        }
//        printf("\r\n");
//    }
    printf("%d\r\n", mmatrix[0][0]);
}

int main()
{
    //freopen("bin\\debug\\in.txt", "r", stdin);


    getinput();

    getmax();

    printresult();

    return 0;
}
